发那科通信之MODBUSTCP(一) | 您所在的位置:网站首页 › fanuc jog013 › 发那科通信之MODBUSTCP(一) |
我们搞工控的,每次用到新的知识点难免会遇到一些挫折。 今年碰巧项目用到发那科机器人165F型,项目中机器人与PLC通信必然少不了的,记得之前做项目用到川崎的机器人,当时自己通信的知识不是太好,当时机器人与欧姆龙PLC之间的交互就采用的IO方式,也是第一次用到二进制转换方式让交互的数据不收限制。 最近几年PLC通信用的较多了,自认为比较熟悉了,本项目机器人与PLC的通信方式就采用了MODBUSTCP. 这里需要提示下,发那科机器人目前常见的通信协议都支持,唯独MODBUSTCP是免费的。。。 好了言归正传,能够让发那科机器人与汇川EasyPLC通过MODBUSTCP方式进行通信,我们需要了解PLC的通信配置,机器人的通信配置,机器人通信IO的分配(每个品牌的工控设备对于MODBUS对应自身寄存器的分配均不一样,但都会遵循MODBUS的协议)。 Modbus协议是应用于电子控制器上的一种通用语言,通过此协议,控制器相互之间、控制器与其它设备之间都可进行通讯,此协议是请求/应答的协议,采用主从通讯模式,Modbus支持RS-232、RS-422、RS-485和Ethernet设备。Modbus主要包含Modbus TCP、Modbus RTU与Modbus ASCII三种,本篇文章采用Modbus TCP作为主要讲解内容,其余两者使用的是RS-串口通讯,在报文、数据帧上略有不同。 Modbus TCP本篇文章只涉及I/O信号的读写。 一、Modbus TCP数据的组成 (此处只做简单介绍,部分内容也是借鉴于网络) 1、Modbus TCP = 表头 + 功能码 + 数据区 方便简写:RO-只读,WO-只写,RW-读写 表1-1 MPAB(报文头) 名称 标识 标志协议 长度 单元标识符 字节 2 Byte 2 Byte 2 Byte 1Byte 含义 报文序号(任意) 固定为00 00 数据位长度 设备地址 表1-2 PDU(帧结构) 功能代码 功能码 对应机器人 单位权限 01 线圈寄存器读取 1位RO 02 分离输入寄存器读取 1位RO 03 保持寄存器读取 16位RO 04 输入寄存器读取 16位RO 05 线圈寄存器写入(1Bit) 1位WO 06 保持寄存器写入(1Bit) 1位WO 16 多保持寄存器写 16位WO 23 多保持寄存器读写 16位RW 2、MODBUS功能码简单介绍 线圈寄存器:开关量,支持读也支持写,写在功能码里面又分为写单个线圈寄存器和写多个线圈寄存器。对应上面的功能码:01、05 离散输入寄存器:相当于线圈寄存器的只读模式,他也是每个bit表示一个开关量,而他的开关量只能读取输入的开关信号,功能码:02 保持寄存器:单位为两个byte,可以存放具体的数据量,并且可读写。比写也分为单个写和多个写,功能码有对应的三个:03、06、16、23 输入寄存器:和保持寄存器类似,只支持读。一个寄存器也是占据两个byte的空间。类比我我通过读取输入寄存器获取现在的AD采集值。对功能码:04 表1-3 数据位组成结构 MPAB PDU 请求 标识 Modbus 长度 设备地址 功能 起始地址 点数 字节数 2 2 2 1 1 2 2 响应 标识 Modbus 长度 设备地址 功能 字节数 数据1 .... 数据2 字节数 2 2 2 1 1 1 1 1 3、发那科机机器人IO地址范围,目前使用后的结论,此对应内容基本用不到。 表1-4 发那科机器人地址范围 离散输入寄存器 地址 Robot I/O 0 DO[1] 1 DO[2] 2 DO[3] ... ... 线圈寄存器 0 DI[1] 1 DI[2] 2 DI[3] ... ... 保持寄存器 0 DI[1] - DI[16] 1 DI[17] - DI[32] 2 DI[33] - DI[48] ... ... 保持寄存器 10000(RO) DI[17] - DI[32] 10001(RO) DI[33] - DI[48] 10002(RO) ... 二、通讯测试 二(1)Modbus TCP机器人只能作为服务端,在进行测试时需要对机器人进行网络配置: 通信配置打开步骤:>>点击菜单MENU>>选择设置>>选择主机通信>>确认ENTER >>进入通信设定界面>>给机器人设定自己规划的IP地址即可。其他项根据需要选择设定。 二(2)Modbus TCP配置 依次按下 MENU - IO - Modbus TCP进入tcp配置界面: 二(3)机器人IO分配 依次按下 MENU - IO - 数字 进入IO监控配置界面-按下分配进入IO分配界面-利用IN/OUT进行切换DI和DO。 第4栏 状态 显示黄色PEND 代表配置正常,需要系统重新启动。状态显示ACTIV表示激活中。 二(4)利用ModbusPoll测试工具 进行ModbusTcp/IP测试读取数据,这里我已经配置了机器人组通信(一个组==16个位),就没有测试单个的IO读写,其他的需求小伙伴们自己动手测试吧。 |
CopyRight 2018-2019 实验室设备网 版权所有 |